home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / BlockStorage.idl < prev    next >
Text File  |  1996-05-01  |  56KB  |  1,611 lines

  1. /*
  2.      File:        BlockStorage.idl
  3.  
  4.      Contains:    External interfaces to Block Storage Family
  5.  
  6.      Version:    Technology:    Copland
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __BLOCKSTORAGE_IDL__
  19. #define __BLOCKSTORAGE_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __TYPES_IDL__
  25. #include <Types.idl>
  26. #endif
  27. #ifndef __MATH64_IDL__
  28. #include <Math64.idl>
  29. #endif
  30. #ifndef __ERRORS_IDL__
  31. #include <Errors.idl>
  32. #endif
  33. #ifndef __NAMEREGISTRY_IDL__
  34. #include <NameRegistry.idl>
  35. #endif
  36. #ifndef __IOMEMORYLISTS_IDL__
  37. #include <IOMemoryLists.idl>
  38. #endif
  39. #ifndef __IOITERATOR_IDL__
  40. #include <IOIterator.idl>
  41. #endif
  42.  
  43. #ifdef __SOMIDL__
  44.  
  45. #if FOR_SYSTEM8_PREEMPTIVE
  46. /*
  47. ******************************************************************************
  48.  *******************************************************************************
  49.  *******************************************************************************
  50.  
  51.  Block Storage Constants
  52.     
  53.  *******************************************************************************
  54.  *******************************************************************************
  55.  *****************************************************************************
  56. */
  57. /*
  58. ******************************************************************************
  59.     
  60.     Store property names
  61.     
  62.  *****************************************************************************
  63. */
  64. /*
  65. ******************************************************************************
  66.     
  67.     Container property names
  68.     
  69.  *****************************************************************************
  70. */
  71. /*
  72. ******************************************************************************
  73.  
  74.     StoreOpenOptions is the set of permissions available when making a Connection
  75.     to a Store.  These options can be OR'd together in any combination. 
  76.     
  77.  *****************************************************************************
  78. */
  79. typedef UInt32                    BSStoreOpenOptions;
  80.  
  81. /*
  82. ******************************************************************************
  83.  
  84.     BSContainerOpenOptions is the set of permissions available when making a 
  85.     Connection to a Container.  These options can be OR'd together in any combination. 
  86.     
  87.  *****************************************************************************
  88. */
  89. typedef UInt32                    BSContainerOpenOptions;
  90.  
  91. /*
  92. ****************************************************************************
  93.      
  94.     Accessibility states
  95.  
  96.      Accessibility States indicate how accessible a Block Storage Container or
  97.          Store is.  There are four currently defined.  Their absolute values 
  98.         are unimportant, but have been split across fairly large ranges to 
  99.         allow for future values to be inserted between them.
  100.  
  101.          kBSOnline and kBSOffline represent the two extremes of accessibility -
  102.          nothing can be less accessible than kBSOffline (that is the state you 
  103.         send a Store to when you are about to delete it) and nothing can be 
  104.         more online than kBSOnline, which means you are fully, 100% available.
  105.         
  106.  ***************************************************************************
  107. */
  108. typedef UInt32                    BSAccessibilityState;
  109.  
  110. /*
  111. ****************************************************************************
  112.     
  113.     Component types
  114.  
  115.  ***************************************************************************
  116. */
  117. typedef UInt32                    BSComponentType;
  118.  
  119. /*
  120. ****************************************************************************
  121.  
  122.     Block List Seek specifiers
  123.     
  124.  ***************************************************************************
  125. */
  126. typedef UInt32                    BSBlockListWhence;
  127.  
  128. /*
  129. ****************************************************************************
  130.  
  131.     Selectors for BSStoreGetDeviceData - specifies which set of Stores to
  132.         return
  133.  
  134.  ***************************************************************************
  135. */
  136. typedef UInt32                    BSStoreGetSelector;
  137.  
  138. /*
  139. ****************************************************************************
  140.  
  141.     Format specifiers - these are generic categories.  There may be further
  142.         distinctions within these categories for number of blocks, etc.
  143.     
  144.  ***************************************************************************
  145. */
  146. typedef OSType                    BSStoreFormatType;
  147.  
  148. /* Maximum number of formats a Mapping plug-in can support */
  149. /*
  150. ****************************************************************************
  151.  *****************************************************************************
  152.  *****************************************************************************
  153.  
  154.     Block Storage Error codes
  155.     
  156.  *****************************************************************************
  157.  *****************************************************************************
  158.  ***************************************************************************
  159. */
  160. /*
  161. ****************************************************************************
  162.  
  163.     Basic error types
  164.     
  165.  ***************************************************************************
  166. */
  167. /*
  168. ****************************************************************************
  169.  
  170.     Block Storage Error ID
  171.     
  172.  ***************************************************************************
  173. */
  174. /*
  175. ****************************************************************************
  176.  
  177.     Block Storage Error Categories
  178.     
  179.  ***************************************************************************
  180. */
  181. /*
  182. ****************************************************************************
  183.  
  184.     Family Errors
  185.     
  186.  ***************************************************************************
  187. */
  188. /*
  189. ****************************************************************************
  190.  
  191.     Expert Errors
  192.     
  193.  ***************************************************************************
  194. */
  195. /*
  196. ****************************************************************************
  197.  
  198.     Mapping Plug-in Errors
  199.     
  200.  ***************************************************************************
  201. */
  202. /*
  203. ****************************************************************************
  204.  
  205.     Partitioning Plug-in Errors
  206.     
  207.  ***************************************************************************
  208. */
  209. /*
  210. ****************************************************************************
  211.  
  212.     Container Plug-in Errors
  213.     
  214.  ***************************************************************************
  215. */
  216. /*
  217. ****************************************************************************
  218.  
  219.     Block List Errors
  220.     
  221.  ***************************************************************************
  222. */
  223. /*
  224. ****************************************************************************
  225.  *****************************************************************************
  226.  *****************************************************************************
  227.  
  228.  Block Storage Types and Structures
  229.  
  230.  *****************************************************************************
  231.  *****************************************************************************
  232.  ***************************************************************************
  233. */
  234. /*
  235. ****************************************************************************
  236.  
  237.     Store and Container Persistent Identifiers
  238.     
  239.  ***************************************************************************
  240. */
  241. typedef OpaquePtr                BSStoreID;                    /* Substituted OpaquePtr for array of char of size 12 */
  242.  
  243. typedef OpaquePtr                BSContainerID;                /* Substituted OpaquePtr for array of char of size 12 */
  244.  
  245. /*
  246. ****************************************************************************
  247.  
  248.     Connection ID's
  249.     
  250.  ***************************************************************************
  251. */
  252. typedef ObjectID                BSContainerConnID;
  253.  
  254. typedef ObjectID                BSStoreConnID;
  255.  
  256. /*
  257. ****************************************************************************
  258.  
  259.     Plug-in run-time references.  References the plug-in in general, not
  260.         a specific instance of it
  261.     
  262.  ***************************************************************************
  263. */
  264. typedef OpaquePtr                BSMappingPlugInRef;
  265.  
  266. typedef OpaquePtr                BSPartitioningPlugInRef;
  267.  
  268. typedef OpaquePtr                BSContainerPlugInRef;
  269.  
  270. /*
  271. ****************************************************************************
  272.  
  273.     Store and Container Run-Time References
  274.     
  275.  ***************************************************************************
  276. */
  277. typedef RegEntryRef                BSStoreRef;
  278.  
  279. typedef RegEntryRef                BSContainerRef;
  280.  
  281. /*
  282. ****************************************************************************
  283.  
  284.     Store and Container Navigation API types
  285.     
  286.  ***************************************************************************
  287. */
  288. typedef ObjectID                BSStoreIteratorID;
  289.  
  290. typedef ObjectID                BSContainerIteratorID;
  291.  
  292. typedef RegPropertyInstance        BSStorePropertyInstance;
  293.  
  294. typedef RegPropertyInstance        BSContainerPropertyInstance;
  295.  
  296. /*
  297. ****************************************************************************
  298.  
  299.     Device block descriptor types
  300.     
  301.  ***************************************************************************
  302. */
  303. typedef UInt64                    BSByteCount;
  304.  
  305. typedef OpaquePtr                BSBlockListRef;
  306.  
  307. typedef OpaquePtr                BSBlockListDescriptorRef;
  308.  
  309. /*
  310. ******************************************************************************
  311.  
  312.     BSBlockListDescriptorInfo - information about a Block List Descriptor
  313.     
  314.  *****************************************************************************
  315. */
  316. typedef SOMLargeStruct            BSBlockListDescriptorInfo;    /* Derived from a struct of 28 bytes in size */
  317.  
  318. typedef OpaquePtr                BSBlockListDescriptorInfoPtr; /* Substituted OpaquePtr for ``BSBlockListDescriptorInfo*'' */
  319.  
  320. /*
  321. ****************************************************************************
  322.  
  323.     BSStoreFormatInfo
  324.     
  325.  ***************************************************************************
  326. */
  327. typedef ItemCount                BSFormatIndex;
  328.  
  329. typedef SOMLargeStruct            BSStoreFormatInfo;            /* Derived from a struct of 16 bytes in size */
  330.  
  331. /*
  332. ****************************************************************************
  333.  
  334.     BSStoreInfo is used to return information about a Store
  335.     
  336.  ***************************************************************************
  337. */
  338. typedef SOMLargeStruct            BSStoreInfo;                /* Derived from a struct of 517 bytes in size */
  339.  
  340. typedef OpaquePtr                BSStoreInfoPtr;                /* Substituted OpaquePtr for ``BSStoreInfo*'' */
  341.  
  342. /*
  343. ****************************************************************************
  344.  
  345.     BSContainerInfo is used to return information about a Container
  346.     
  347.  ***************************************************************************
  348. */
  349. typedef SOMLargeStruct            BSContainerInfo;            /* Derived from a struct of 21 bytes in size */
  350.  
  351. typedef OpaquePtr                BSContainerInfoPtr;            /* Substituted OpaquePtr for ``BSContainerInfo*'' */
  352.  
  353. /*
  354. ****************************************************************************
  355.  
  356.     BSPartitionInfo is used to return information about a Partition
  357.     
  358.  ***************************************************************************
  359. */
  360. typedef SOMLargeStruct            BSPartitionDescriptor;        /* Derived from a struct of 325 bytes in size */
  361.  
  362. typedef OpaquePtr                BSPartitionDescriptorPtr;    /* Substituted OpaquePtr for ``BSPartitionDescriptor*'' */
  363.  
  364. /*
  365. ****************************************************************************
  366.  
  367.     BSStoreComponent describes a component of a Store.  A component may
  368.     be an external device or another Store.  
  369.     
  370.  ***************************************************************************
  371. */
  372. typedef SOMLargeStruct            BSStoreComponent;            /* Derived from a struct of 369 bytes in size */
  373.  
  374. typedef OpaquePtr                BSStoreComponentPtr;        /* Substituted OpaquePtr for ``BSStoreComponent*'' */
  375.  
  376. /*
  377. ****************************************************************************
  378.  
  379.  ***************************************************************************
  380. */
  381. typedef SOMLargeStruct            BSStoreIOIteratorData;        /* Derived from a struct of 537 bytes in size */
  382.  
  383. /*
  384. ****************************************************************************
  385.  *****************************************************************************
  386.  *****************************************************************************
  387.  
  388.     Block Storage API Functions
  389.     
  390.     These functions make up the Block Storage API.  All functions are callable
  391.     from the user or privileged bands.  The API is split into the following
  392.     sections:
  393.     
  394.         Navigation - operations to find a Store or Container and its 
  395.             relationship to other Stores and Containers
  396.             
  397.         Connections - operations to open and close connections with Stores and
  398.             Containers
  399.             
  400.         Block Lists - operations to create and manipulate Block Lists, used
  401.             as inputs for I/O operations
  402.             
  403.         I/O - operations to read and write date to Stores
  404.         
  405.         Accessibility - operations to change the accessibility of Store and
  406.             Containers.  Power-down and eject are handled via this interface
  407.             
  408.         Configuration - operations to add new devices, replace plug-ins,
  409.             format and partition Stores and modify the relationships of 
  410.             Stores and Containers to each other.
  411.     
  412.  *****************************************************************************
  413.  *****************************************************************************
  414.  ***************************************************************************
  415. */
  416. /*
  417. ****************************************************************************
  418.  *****************************************************************************
  419.  
  420.     Block Storage Navigation API
  421.     
  422.  *****************************************************************************
  423.  ***************************************************************************
  424. */
  425. /*
  426. ******************************************************************************
  427.     
  428.     BSStoreGetDeviceData - a simple iteration model to retrieve all of the
  429.         Stores, the leaf Stores or the primary Stores.
  430.     
  431.     Inputs:        selector - which set of Stores to retrieve
  432.                     kBSStoreGetLeafStores retrieves leaf stores
  433.                     kBSStoreGetAllStores retrieves all stores
  434.                     kBSStoreGetPrimaryStores retrieves only primary stores
  435.                 requestItemCount - the size of the buffer
  436.     
  437.     Outputs:    iteratorData - the array of BSStoreIOIteratorData structures
  438.                     to be filled in
  439.                 totalItemCount - the actual number of items available (may be
  440.                     more than requestItemCount, though only requestItemCount
  441.                     structures will be filled in in iteratorData)
  442.     
  443.     Returns:    E_BSSuccess if successful
  444.                 
  445.     
  446.  *****************************************************************************
  447. */
  448. /*
  449. ******************************************************************************
  450.     
  451.     BSStoreIteratorCreate - Creates an iterator for Block Storage Stores which
  452.         will be initially placed on startingStore.  If starting Store is NULL
  453.         the iterator will be placed "in the soup" at the root of the Store
  454.         hierarchy
  455.  
  456.     Inputs:        startingStore - the Store to begin at
  457.     
  458.     Outputs:    newIterator - the returned iterator
  459.     
  460.     Returns:    E_BSSuccess if successful
  461.                 
  462.     
  463.  *****************************************************************************
  464. */
  465. /*
  466. ******************************************************************************
  467.     
  468.     BSStoreIteratorDispose - disposes of an iterator, freeing all resources
  469.         associated with it
  470.     
  471.     Inputs:        disposeIterator - the iterator to dispose
  472.     
  473.     Outputs:    <none>
  474.     
  475.     Returns:    E_BSSuccess if successful
  476.     
  477.  *****************************************************************************
  478. */
  479. /*
  480. ******************************************************************************
  481.     
  482.     BSStoreIteratorEnter - Moves the iterator into the child the iterator is
  483.         currently on, placing it on the first child
  484.     
  485.     Inputs:        iterator - the iterator to move
  486.     
  487.     Outputs:    newStore - the Store we've just exited
  488.     
  489.     Returns:    E_BSSuccessful
  490.     
  491.  *****************************************************************************
  492. */
  493. /*
  494. ******************************************************************************
  495.     
  496.     BSStoreIteratorExit - Moves the iterator into the parent the iterator is
  497.         currently on, placing the iterator on the Store it exited.
  498.     
  499.     Inputs:        iterator - the iterator to move
  500.     
  501.     Outputs:    newStore - the Store we've been placed on
  502.     
  503.     Returns:    E_BSSuccess if successful
  504.     
  505.  *****************************************************************************
  506. */
  507. /*
  508. ******************************************************************************
  509.     
  510.     BSStoreIteratorRestartChildren - Places the iterator on the first child
  511.         in the current Store
  512.     
  513.     Inputs:        iterator - the iterator to restart
  514.     
  515.     Outputs:    newChild - the child we've been placed on
  516.     
  517.     Returns:    E_BSSuccess if succesful
  518.     
  519.  *****************************************************************************
  520. */
  521. /*
  522. ******************************************************************************
  523.     
  524.     BSStoreIteratorRestartParent - Places the iterator on the first parent
  525.         in the current Store
  526.     
  527.     Inputs:        iterator - the iterator to restart
  528.     
  529.     Outputs:    newParent - the parent we've been placed on
  530.     
  531.     Returns:    E_BSSuccess if succesful
  532.     
  533.  *****************************************************************************
  534. */
  535. /*
  536. ******************************************************************************
  537.     
  538.     BSStoreIteratorNextChild - Moves the iterator to the next child
  539.     
  540.     Inputs:        iterator - the iterator to move
  541.     
  542.     Outputs:    newChild - the child we've been placed on
  543.                 changed - true if a parent or child has been added or deleted
  544.                         to this Store since the last BSStoreIteratorNextChild or 
  545.                         BSStoreIteratorNextParent call
  546.     
  547.     Returns:    E_BSSuccess if successful
  548.     
  549.  *****************************************************************************
  550. */
  551. /*
  552. ******************************************************************************
  553.     
  554.     BSStoreIteratorNextParent - Moves the iterator to the next parent
  555.     
  556.     Inputs:        iterator - iterator to move
  557.                     changed - true if a parent or child has been added or deleted
  558.                         since the last BSStoreIteratorNextChild or 
  559.                         BSStoreIteratorNextParent call
  560.                         
  561.     Outputs:    newParent - the parent we've been placed on
  562.     
  563.     Returns:    E_BSSuccess if successful
  564.     
  565.  *****************************************************************************
  566. */
  567. /*
  568. ******************************************************************************
  569.     
  570.     BSContainerIteratorCreate - Creates an iterator for Block Storage Containers
  571.         which will be initially placed on startingContainer.  If starting 
  572.         Container is NULL the iterator will be placed "in the soup" at the root 
  573.         of the Container hierarchy.
  574.     
  575.     Inputs:        startingContainer - the container to start at or NULL to start
  576.                     at the root of the Container hierarchy
  577.     
  578.     Outputs:    newIterator - the created iterator
  579.     
  580.     Returns:    E_BSSuccess if successful
  581.     
  582.  *****************************************************************************
  583. */
  584. /*
  585. ******************************************************************************
  586.     
  587.     BSContainerIteratorDispose - disposes of an iterator, freeing all resources
  588.         associated with it
  589.     
  590.     Inputs:        disposeIterator - the iterator to dispose
  591.     
  592.     Outputs:    <none>
  593.     
  594.     Returns:    E_BSSuccess if successful
  595.     
  596.  *****************************************************************************
  597. */
  598. /*
  599. ******************************************************************************
  600.     
  601.     BSContainerIteratorEnter - Moves the iterator into the child the iterator is
  602.         currently on, placing it on the first child
  603.     
  604.     Inputs:        iterator - the iterator to move
  605.     
  606.     Outputs:    newContainer - the Container we've been placed on
  607.     
  608.     Returns:    E_BSSuccess if successful
  609.     
  610.  *****************************************************************************
  611. */
  612. /*
  613. ******************************************************************************
  614.     
  615.     BSContainerIteratorExit - exits to the parent of the current Container,
  616.         placing the iterator on the Container it exited.  (Containers may have
  617.         only one parent)
  618.     
  619.     Inputs:        iterator - the iterator to move
  620.     
  621.     Outputs:    newContainer - the Container we've just exited
  622.     
  623.     Returns:    E_BSSuccess if successful
  624.     
  625.  *****************************************************************************
  626. */
  627. /*
  628. ******************************************************************************
  629.     
  630.     BSContainerIteratorRestartChildren - Places the iterator on the first child 
  631.         in the current Container
  632.     
  633.     Inputs:        iterator - the iterator to restart
  634.     
  635.     Outputs:    newChild - the child we've been placed on
  636.     
  637.     Returns:    E_BSSuccess if succesful    
  638.     
  639.  *****************************************************************************
  640. */
  641. /*
  642. ******************************************************************************
  643.     
  644.     BSContainerIteratorNextChild - Moves the iterator to the next child
  645.     
  646.     Inputs:        iterator - the iterator to move
  647.     
  648.     Outputs:    newChild - the child we've been placed on
  649.                 changed - true if a child has been added or deleted to this 
  650.                 Container since the last BSContainerIteratorNextChild.
  651.     
  652.     Returns:    E_BSSuccess if successful    
  653.     
  654.  *****************************************************************************
  655. */
  656. /*
  657. ******************************************************************************
  658.     
  659.     BSStoreFindByID - finds a Store by its identifier and returns a ref
  660.     
  661.     Inputs:        storeID - the Store ID to find
  662.     
  663.     Outputs:    foundStore - the found reference
  664.     
  665.     Returns:    E_BSSuccess if successful
  666.     
  667.  *****************************************************************************
  668. */
  669. /*
  670. ******************************************************************************
  671.     
  672.     BSStoreGetPropertySize - retrieves the size of the named property from the 
  673.                 Store.
  674.     
  675.     Inputs:        store - the Store to retrieve the property from
  676.                 propertyName - the name of the property to retrieve the size of
  677.                 propertyInstance - the instance of the property within this Store
  678.     
  679.     Outputs:    propertySize - filled in with the size of the property
  680.     
  681.     Returns:    E_BSSuccess if successful
  682.     
  683.  *****************************************************************************
  684. */
  685. /*
  686. ******************************************************************************
  687.     
  688.     BSStoreGetProperty - retrieves the named property from the Store.
  689.     
  690.     Inputs:        store - the Store to retrieve the property from
  691.                 propertyName - the name of the property to retrieve the size of
  692.                 propertyInstance - the instance of the property within this Store
  693.                 propertySize - the size of the buffer passed in (on input)
  694.                 
  695.     Outputs:    propertyValue - a pointer to the buffer to be filled in
  696.                 propertySize - the size filled in (on exit)
  697.     
  698.     Returns:    E_BSSuccess if successful
  699.     
  700.  *****************************************************************************
  701. */
  702. /*
  703. ******************************************************************************
  704.     
  705.     BSContainerGetPropertySize - retrieves the size of the named property from 
  706.                 the Container.
  707.     
  708.     Inputs:        container - the Container to retrieve the property from
  709.                 propertyName - the name of the property to retrieve the size of
  710.                 propertyInstance - the instance of the property within this Store
  711.     
  712.     Outputs:    propertySize - filled in with the size of the property
  713.     
  714.     Returns:    E_BSSuccess if successful
  715.     
  716.  *****************************************************************************
  717. */
  718. /*
  719. ******************************************************************************
  720.     
  721.     BSContainerGetProperty - retrieves the named property from the Container.
  722.     
  723.     Inputs:        container - the Container to retrieve the property from
  724.                 propertyName - the name of the property to retrieve the size of
  725.                 propertyInstance - the instance of the property within this 
  726.                     Container
  727.                 propertySize - the size of the buffer passed in (on input)
  728.                 
  729.     Outputs:    propertyValue - a pointer to the buffer to be filled in
  730.                 propertySize - the size filled in (on exit)
  731.     
  732.     Returns:    E_BSSuccess if successful
  733.  
  734.  *****************************************************************************
  735. */
  736. /*
  737. ****************************************************************************
  738.  *****************************************************************************
  739.  
  740.     Block Storage Connection Operations
  741.     
  742.  *****************************************************************************
  743.  ***************************************************************************
  744. */
  745. /*
  746. ******************************************************************************
  747.  
  748.     BSStoreOpen - Opens a Connection to a Store
  749.  
  750.     Inputs:        store    - the Store to be opened
  751.                 options    - options to the connection
  752.  
  753.     Outputs:     newConnection    - the created connection if successful
  754.  
  755.     Returns:    E_BSSuccess on success
  756.                 E_BSOutOfResources if resources for the connection cannot be allocated
  757.                 E_BSStoreInUse if the Store has an exclusive connection or if an
  758.                     exclusive connection was requested to a Store with any connections
  759.                     open.
  760.                 E_BSStoreWriteProtected if Write access was requested to a read only
  761.                     Store
  762.                 E_BSStoreNotFound if store did not match any existing Stores
  763.  
  764.  *****************************************************************************
  765. */
  766. /*
  767. ******************************************************************************
  768.  
  769.     BSStoreConnClose - closes a Connection to a Store
  770.  
  771.     Inputs:        connection - the connection to be closed
  772.  
  773.     Outputs:    <none>
  774.  
  775.     Returns:    E_BSSuccess if successful
  776.                 E_BSBadConnection if the connection ID has problems
  777.  
  778.  *****************************************************************************
  779. */
  780. /*
  781. ******************************************************************************
  782.  
  783.     BSContainerOpen - Opens a Connection to a Container
  784.  
  785.     Inputs:        container    - the Container to be opened
  786.                 options    - options to the connection
  787.  
  788.     Outputs:     newConnection    - the created connection if successful
  789.  
  790.     Returns:    E_BSSuccess on success
  791.                 E_BSOutOfResources if resources for the connection cannot be allocated
  792.                 E_BSContainerInUse if the Container has an exclusive connection or if an
  793.                     exclusive connection was requested to a Container with any connections
  794.                     open.
  795.                 E_BSContainerNotFound if container did not match any existing Containers
  796.  
  797.  *****************************************************************************
  798. */
  799. /*
  800. ******************************************************************************
  801.  
  802.     BSContainerConnClose - closes a Connection to a Container
  803.  
  804.     Inputs:        connection - the connection to be closed
  805.  
  806.     Outputs:    <none>
  807.  
  808.     Returns:    E_BSSuccess if successful
  809.                 E_BSBadConnection if the connection ID has problems
  810.  
  811.  *****************************************************************************
  812. */
  813. /*
  814. ****************************************************************************
  815.  *****************************************************************************
  816.  
  817.     Block Storage Block List Operations
  818.     
  819.  *****************************************************************************
  820.  ***************************************************************************
  821. */
  822. /*
  823. ******************************************************************************
  824.     
  825.     BSBlockListCreate - Creates a block list for use with Block Storage
  826.     
  827.     Inputs:        numAnticipatedRange - the number of ranges expected
  828.     
  829.     Outputs:    newList - the new list to which ranges may be added
  830.     
  831.     Returns:    E_BSSuccess if successful
  832.     
  833.  *****************************************************************************
  834. */
  835. /*
  836. ******************************************************************************
  837.     
  838.     BSBlockListAddRange - Appends a new range to an existing block list
  839.     
  840.     Inputs:        appendList - the list to add the new range to
  841.                 startingOffset - the offset, in bytes on the device of the
  842.                     start of the range
  843.                 length - the length, in bytes, of the range
  844.     
  845.     Outputs:    <none>
  846.     
  847.     Returns:    E_BSSuccess if successful
  848.     
  849.  *****************************************************************************
  850. */
  851. /*
  852. ******************************************************************************
  853.     
  854.     BSBlockListFinalize - creates a descriptor to be used in a Block Storage
  855.         read or write call from the memory list.  After this call has been made
  856.         no more ranges may be added to the list.
  857.     
  858.     Inputs:        finalizeList - the list to be finalized
  859.     
  860.     Outputs:    newDescriptor - the descriptor, to be used in a read/write call
  861.     
  862.     Returns:    E_BSSuccess if successful
  863.     
  864.  *****************************************************************************
  865. */
  866. /*
  867. ******************************************************************************
  868.  
  869.     BSBlockListDelete - Removes a Block List.  All resources
  870.         associated with this Block List are relinquished.  This includes memory
  871.         which was prepared for any of its descriptors.  All descriptors are
  872.         invalidated.  This call should only be used to clean-up Block Lists
  873.         in an abort condition.  In normal usage, use BSBlockListDescriptorDelete
  874.         to remove all descriptors and free the Block List.
  875.  
  876.     Inputs:        deleteList - the descriptor to delete
  877.  
  878.     Outputs:    <none>
  879.  
  880.     Returns:    E_BSSuccess if successful
  881.  
  882.  *****************************************************************************
  883. */
  884. /*
  885. ******************************************************************************
  886.  
  887.     BSBlockListDescriptorDelete - Removes a Block List Descriptor.  All resources
  888.         associated with this descriptor are relinquished.  This includes memory
  889.         which was prepared for this descriptor.  If this was the last descriptor
  890.         for a BlockList the BlockList is free'd also.
  891.  
  892.     Inputs:        deleteDescriptor - the descriptor to delete
  893.  
  894.     Outputs:    <none>
  895.  
  896.     Returns:    E_BSSuccess if successful
  897.  
  898.  *****************************************************************************
  899. */
  900. /*
  901. ******************************************************************************
  902.  
  903.     BSBlockListDescriptorSeek - Changes the offset within the Block List descriptor
  904.  
  905.     Inputs:        seekDescriptor - the descriptor to seek within
  906.                 whence - how to seek
  907.                 offset - where to seek
  908.  
  909.     Outputs:    newOffset - what the current offset is now
  910.  
  911.     Returns:    E_BSSuccess if successful
  912.  
  913.  *****************************************************************************
  914. */
  915. /*
  916. ******************************************************************************
  917.  
  918.     BSBlockListGetExtent - Gets an extent at the current offset for up to the
  919.         specified length
  920.  
  921.     Inputs:        srcDesriptor - the descriptor to get the extent from
  922.                 requestedLen - how long an extent to try to get
  923.  
  924.     Outputs:    startingByte - the starting byte address in the device of the
  925.                     extent
  926.                 extentLen - how long an extent within the descriptor was found
  927.  
  928.     Returns:    E_BSSuccess if successful
  929.  
  930.  *****************************************************************************
  931. */
  932. /*
  933. ******************************************************************************
  934.  
  935.     BSBlockListAddSimpleDescriptor - adds a new descriptor to a block list.  The
  936.         new descriptor begins at the current offset of the srcDescriptor.  The
  937.         offset of the srcDescriptor is updated to point at the first byte after
  938.         the end of the new descriptor.
  939.  
  940.     Inputs:        srcDescriptor - the descriptor to base the new descriptor upon
  941.                 length - how much the new descriptor should cover
  942.                 bias - the bias offset to be applied to the block address of
  943.                     srcDescriptor.  When addresses are retrieve from newDescriptor
  944.                     bias will be added.
  945.  
  946.     Outputs:    newDescriptor - the new descriptor
  947.  
  948.     Returns:    E_BSSucess if successful
  949.  
  950.  *****************************************************************************
  951. */
  952. /*
  953. ******************************************************************************
  954.  
  955.     BSBlockListDescriptorGetInfo - returns information about the specified
  956.                 descriptor
  957.  
  958.     Inputs:        infoDescriptor - the descriptor to get information about
  959.  
  960.     Outputs:    info - the information
  961.  
  962.     Returns:    E_BSSuccess if successful
  963.  
  964.  *****************************************************************************
  965. */
  966. /*
  967. ******************************************************************************
  968.  
  969.     BSBlockListDescriptorCheckBlockSizes - checks the extents specified by the
  970.         descriptor and ensures that all start at 0 mod blockSize and are 
  971.         0 mod blockSize in length.   
  972.  
  973.     Inputs:        checkDescriptor - the descriptor to check
  974.                 blockSize - the block size to check for
  975.                 
  976.     Outputs:    <none>
  977.  
  978.     Returns:    E_BSSuccess if successful
  979.                 E_BSBlockListBadBlockSize if any extents are mis-aligned
  980.  
  981.  *****************************************************************************
  982. */
  983. /*
  984. ******************************************************************************
  985.  
  986.     BSBlockListDescriptorCheckBounds - checks the extents specified by the
  987.         descriptor and ensures that none specify addresses beyond bound
  988.  
  989.     Inputs:        checkDescriptor - the descriptor to check
  990.                 bound - the highest allowable address
  991.                 
  992.     Outputs:    <none>
  993.  
  994.     Returns:    E_BSSuccess if successful
  995.                 E_BSBlockListBadBlockSize if any extents are mis-aligned
  996.  
  997.  *****************************************************************************
  998. */
  999. /*
  1000. ****************************************************************************
  1001.  *****************************************************************************
  1002.  
  1003.     Block Storage I/O Operations
  1004.     
  1005.  *****************************************************************************
  1006.  ***************************************************************************
  1007. */
  1008. /*
  1009. ******************************************************************************
  1010.  
  1011.     BSStoreConnRead - reads data from the Store indicated by the Connection.
  1012.         This is the simple version of the call, taking only a single range
  1013.  
  1014.     Inputs:        readConnection - the connection to the Store to be read from
  1015.                 startingOffset - the 64-bit offset into the device to start the
  1016.                         read at
  1017.                 bytesToRead - the 32-bit, unsigned, number of bytes to read
  1018.                 
  1019.     Outputs:    buffer - filled in with the bytes read
  1020.  
  1021.     Returns:    E_BSSuccess if successful
  1022.                 E_BSBadConnection if the connection ID has problems
  1023.                 E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1024.                     the Store
  1025.                 E_BSMPIUnitNotResponding if the device does not respond
  1026.                 E_BSMPITransferError if some error was detected during the transfer
  1027.                 E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1028.                 E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1029.                     not be allocated
  1030.                 E_BSMPIMediaRemoved if the media was removed
  1031.  
  1032.  *****************************************************************************
  1033. */
  1034. /*
  1035. ******************************************************************************
  1036.  
  1037.     BSStoreConnWrite - writes data to the Store a Connection indicates.  This is
  1038.         the simple version of the call taking only a single range.
  1039.  
  1040.     Inputs:        writeConnection - the connection to the Store to be read from
  1041.                 srcMem - where the data is to be taken from
  1042.                 destBlocks - the blocks on the Store where the data is to be placed
  1043.  
  1044.     Outputs:    <none>
  1045.  
  1046.     Returns:    E_BSSuccess if successful
  1047.             E_BSBadConnection if the connection ID has problems
  1048.             E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1049.                 the Store
  1050.             E_BSMPIUnitNotResponding if the device does not respond
  1051.             E_BSMPITransferError if some error was detected during the transfer
  1052.             E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1053.             E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1054.                 not be allocated
  1055.             E_BSMPIMediaRemoved if the media was removed
  1056.  
  1057.  *****************************************************************************
  1058. */
  1059. /*
  1060. ******************************************************************************
  1061.  
  1062.     BSStoreConnReadSG - reads data from the Store indicated by the Connection.
  1063.         This is the scatter/gather version of the call.  The Block List is
  1064.         generated by the calls above, the Memory List calls can be found in
  1065.         <MemoryLists.h>.
  1066.  
  1067.     Inputs:        readConnection - the connection to the Store to be read from
  1068.                 srcBlocks - a descriptor indicating the ranges on the device
  1069.                     to be read
  1070.                 destMemory - a Memory List descriptor indicating where the
  1071.                     data is to be placed
  1072.                     
  1073.     Outputs:    <none>
  1074.  
  1075.     Returns:    E_BSSuccess if successful
  1076.                 E_BSBadConnection if the connection ID has problems
  1077.                 E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1078.                     the Store
  1079.                 E_BSMPIUnitNotResponding if the device does not respond
  1080.                 E_BSMPITransferError if some error was detected during the transfer
  1081.                 E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1082.                 E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1083.                     not be allocated
  1084.                 E_BSMPIMediaRemoved if the media was removed
  1085.  
  1086.  *****************************************************************************
  1087. */
  1088. /*
  1089. ******************************************************************************
  1090.  
  1091.     BSStoreConnWriteSG - writes data to the Store a Connection indicates.  This 
  1092.         is the scatter/gather version of the call.  The Block List is
  1093.         generated by the calls above, the Memory List calls can be found in
  1094.         <MemoryLists.h>.
  1095.  
  1096.     Inputs:        writeConnection - the connection to the Store to be read from
  1097.                 srcMem - where the data is to be taken from
  1098.                 destBlocks - the blocks on the Store where the data is to be placed
  1099.  
  1100.     Outputs:    <none>
  1101.  
  1102.     Returns:    E_BSSuccess if successful
  1103.             E_BSBadConnection if the connection ID has problems
  1104.             E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1105.                 the Store
  1106.             E_BSMPIUnitNotResponding if the device does not respond
  1107.             E_BSMPITransferError if some error was detected during the transfer
  1108.             E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1109.             E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1110.                 not be allocated
  1111.             E_BSMPIMediaRemoved if the media was removed
  1112.  
  1113.  *****************************************************************************
  1114. */
  1115. /*
  1116. ******************************************************************************
  1117.  
  1118.     BSStoreConnReadAsync - reads data from the Store indicated by the Connection.
  1119.         This is the asynchronous version of the simple call, taking only a 
  1120.         single range.
  1121.  
  1122.     Inputs:        readConnection - the connection to the Store to be read from
  1123.                 startingOffset - the 64-bit offset into the device to start the
  1124.                         read at
  1125.                 bytesToRead - the 32-bit, unsigned, number of bytes to read
  1126.                 notification - how the calling app wishes to be notified
  1127.                 
  1128.     Outputs:    buffer - filled in with the bytes read
  1129.  
  1130.     Returns:    E_BSSuccess if successful
  1131.                 E_BSBadConnection if the connection ID has problems
  1132.                 E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1133.                     the Store
  1134.                 E_BSMPIUnitNotResponding if the device does not respond
  1135.                 E_BSMPITransferError if some error was detected during the transfer
  1136.                 E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1137.                 E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1138.                     not be allocated
  1139.                 E_BSMPIMediaRemoved if the media was removed
  1140.  
  1141.  *****************************************************************************
  1142. */
  1143. /*
  1144. ******************************************************************************
  1145.  
  1146.     BSStoreConnWriteAsync - writes data to the Store a Connection indicates.  
  1147.         This is the asynchronous version of the simple call, taking only a
  1148.         single range.
  1149.  
  1150.     Inputs:        writeConnection - the connection to the Store to be read from
  1151.                 srcMem - where the data is to be taken from
  1152.                 destBlocks - the blocks on the Store where the data is to be placed
  1153.                 notification - how the caller wishes to be notified
  1154.                 
  1155.     Outputs:    bytesWritten - the number of bytes written
  1156.                 (srcMem must remain a valid memory area until 
  1157.                 notification of completion is received)
  1158.  
  1159.     Returns:    E_BSSuccess if successful
  1160.             E_BSBadConnection if the connection ID has problems
  1161.             E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1162.                 the Store
  1163.             E_BSMPIUnitNotResponding if the device does not respond
  1164.             E_BSMPITransferError if some error was detected during the transfer
  1165.             E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1166.             E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1167.                 not be allocated
  1168.             E_BSMPIMediaRemoved if the media was removed
  1169.  
  1170.  *****************************************************************************
  1171. */
  1172. /*
  1173. ******************************************************************************
  1174.  
  1175.     BSStoreConnReadSGAsync - reads data from the Store indicated by the Connection.
  1176.         This is the asynchronous version of the scatter/gather  call.  
  1177.         The Block List is generated by the calls above, the Memory List calls 
  1178.         can be found in <MemoryLists.h>.
  1179.  
  1180.     Inputs:        readConnection - the connection to the Store to be read from
  1181.                 srcBlocks - a descriptor indicating the ranges on the device
  1182.                     to be read
  1183.                 destMemory - a Memory List descriptor indicating where the
  1184.                     data is to be placed
  1185.                 notification - how the caller wishes to be notified
  1186.                     
  1187.     Outputs:    <none>
  1188.  
  1189.     Returns:    E_BSSuccess if successful
  1190.                 E_BSBadConnection if the connection ID has problems
  1191.                 E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1192.                     the Store
  1193.                 E_BSMPIUnitNotResponding if the device does not respond
  1194.                 E_BSMPITransferError if some error was detected during the transfer
  1195.                 E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1196.                 E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1197.                     not be allocated
  1198.                 E_BSMPIMediaRemoved if the media was removed
  1199.  
  1200.  *****************************************************************************
  1201. */
  1202. /*
  1203. ******************************************************************************
  1204.  
  1205.     BSStoreConnWriteSGAsync - writes data to the Store a Connection indicates. 
  1206.         This is the asynchronous version of the scatter/gather call.  The 
  1207.         Block List is generated by the calls above, the Memory List calls can
  1208.         be found in <MemoryLists.h>.
  1209.  
  1210.     Inputs:        writeConnection - the connection to the Store to be read from
  1211.                 srcMem - where the data is to be taken from
  1212.                     (the memory areas indicated by srcMem must remain valid until 
  1213.                     notification is received)
  1214.                 destBlocks - the blocks on the Store where the data is to be placed
  1215.                 notification - how the caller wishes to be notified of completion
  1216.                 
  1217.     Outputs:    <none>
  1218.                 
  1219.  
  1220.     Returns:    E_BSSuccess if successful
  1221.             E_BSBadConnection if the connection ID has problems
  1222.             E_BSMPIOutOfStoreBounds if the request exceeds the boundaries of 
  1223.                 the Store
  1224.             E_BSMPIUnitNotResponding if the device does not respond
  1225.             E_BSMPITransferError if some error was detected during the transfer
  1226.             E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1227.             E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1228.                 not be allocated
  1229.             E_BSMPIMediaRemoved if the media was removed
  1230.  
  1231.  *****************************************************************************
  1232. */
  1233. /*
  1234. ******************************************************************************
  1235.  
  1236.     BSStoreConnFlush - Flushes caches for this Store and any Stores this Store
  1237.         is derived from.
  1238.  
  1239.     Inputs:        flushConnection - the connection to the Store to be flushed
  1240.  
  1241.     Outputs:    <none>
  1242.                 
  1243.  
  1244.     Returns:    E_BSSuccess if successful
  1245.             E_BSBadConnection if the connection ID has problems
  1246.             E_BSMPIUnitNotResponding if the device does not respond
  1247.             E_BSMPITransferError if some error was detected during the transfer
  1248.             E_BSMPIMemoryAccessFault if the destination memory was not accessible
  1249.             E_BSMPIOutOfResources if a necessary resource (usually memory) could
  1250.                 not be allocated
  1251.             E_BSMPIMediaRemoved if the media was removed
  1252.  
  1253.  *****************************************************************************
  1254. */
  1255. /*
  1256. ****************************************************************************
  1257.  *****************************************************************************
  1258.  
  1259.     Block Storage Accessibility Operations
  1260.     
  1261.  *****************************************************************************
  1262.  ***************************************************************************
  1263. */
  1264. /*
  1265. ******************************************************************************
  1266.  
  1267.     BSStoreConnGoToAccessibilityState - requests that a Store change its
  1268.         accessibility state to the one desired
  1269.  
  1270.     Inputs:        connection - connection to the Store to change state
  1271.                 newState - the desired state
  1272.  
  1273.     Outputs:    <none>
  1274.  
  1275.     Returns:    E_BSSuccess if successful
  1276.  
  1277.  *****************************************************************************
  1278. */
  1279. /*
  1280. ******************************************************************************
  1281.  
  1282.     BSContainerConnGoToAccessibilityState - requests that a Container change 
  1283.         its accessibility state to the one desired
  1284.  
  1285.     Inputs:        connection - connection to the Container to change state
  1286.                 newState - the desired state
  1287.  
  1288.     Outputs:    <none>
  1289.  
  1290.     Returns:    E_BSSuccess if successful
  1291.  
  1292.  *****************************************************************************
  1293. */
  1294. /*
  1295. ****************************************************************************
  1296.  *****************************************************************************
  1297.  
  1298.     Block Storage Configuration
  1299.     
  1300.  *****************************************************************************
  1301.  ***************************************************************************
  1302. */
  1303. /*
  1304. ******************************************************************************
  1305.  
  1306.     BSStoreConnGetInfo - gets information about the Store a Connection indicates
  1307.  
  1308.     Inputs:        infoConnection - the connection to the Store we want info about
  1309.  
  1310.     Outputs:    infoBuffer - the information about the Store
  1311.  
  1312.     Returns:    E_BSSuccess if successful
  1313.                 E_BSBadConnection if the connection ID has problems
  1314.  
  1315.  *****************************************************************************
  1316. */
  1317. /*
  1318. ******************************************************************************
  1319.  
  1320.     BSStoreCreate - creates a new Store.  The Store is not added into the Block 
  1321.                     Storage Name Store hierarchy.
  1322.  
  1323.     Inputs:        <none>
  1324.  
  1325.     Outputs:    newStore - the ID of the new Store 
  1326.                 newStoreConnection    - a connection to the created Store
  1327.  
  1328.     Returns:    E_BSSuccess on success
  1329.                 E_BSENoMoreStores if no more Stores can be allocated
  1330.                 E_BSOutOfResources if other resources cannot be allocated
  1331.  
  1332.  *****************************************************************************
  1333. */
  1334. /*
  1335. ******************************************************************************
  1336.  
  1337.     BSStoreConnDeleteAndClose - deletes the Store the current connection 
  1338.         references and closes the connection
  1339.  
  1340.     Inputs:        connection - the connection to the Store to be deleted
  1341.  
  1342.     Outputs:    <none>
  1343.     Returns:    E_BSSuccess on success
  1344.                 E_BSStoreInUse if other connections are open to the Store
  1345.  
  1346.  *****************************************************************************
  1347. */
  1348. /*
  1349. ******************************************************************************
  1350.  
  1351.     BSStoreConnSetPartitionInfo - Sets data in a partition map entry on a Store
  1352.  
  1353.     Inputs:        storeConnection - the connection to the Store
  1354.                 partitionNum - the partition map entry to be set
  1355.                 partitionInfo - a pointer to the new partition map entry info
  1356.  
  1357.     Returns:    E_BSSuccess if successful
  1358.                 E_BSBadConnection if the connection ID has problems
  1359.                 E_BSPPINoPlugIn if the Store does not have a Partitioning Plug-in
  1360.                 E_BSPPIOverlappingPartition if the requested partition overlaps
  1361.                     another
  1362.                 E_BSPPIOutOfStoreBounds if the request partition exceeds the limits
  1363.                     of the Store
  1364.  
  1365.  *****************************************************************************
  1366. */
  1367. /*
  1368. ******************************************************************************
  1369.  
  1370.     BSStoreConnSetPartitionInfo - Gets data in a partition map entry on a Store
  1371.  
  1372.     Inputs:        storeConnection - the connection to the Store
  1373.                 partitionNum - the partition map entry to be retrieved
  1374.                 partitionInfo - a pointer to the partition map entry info buffer
  1375.  
  1376.     Returns:    E_BSSuccess if successful
  1377.                 E_BSBadConnection if the connection ID has problems
  1378.                 E_BSPPINoPlugIn if the Store does not have a Partitioning Plug-in
  1379.  
  1380.  *****************************************************************************
  1381. */
  1382. /*
  1383. ******************************************************************************
  1384.  
  1385.     BSStoreConnMapPartition - Maps a partition from a Store onto another Store
  1386.  
  1387.     Inputs:        srcConnection - the connection to the source Store
  1388.                 partitionNum - the partition to be mapped
  1389.                 destConnection - the connection to the destination Store
  1390.                 destStartingBlock - where in the destination Store the mapped 
  1391.                     partition should be placed
  1392.  
  1393.     Returns:    E_BSSuccess if successful
  1394.                 E_BSBadConnection if the connection ID has problems
  1395.                 E_BSPPINoPlugIn if the Store does not have a Partitioning Plug-in
  1396.                 E_BSPPIMappingNotSupported if the mapping is not supported by either
  1397.                     Store
  1398.                 E_BSPPIPartitionNonExistant if the source partition doesn't exist
  1399.                  E_BSEHierarchyTooDeep if this would create too many layers in the
  1400.                     hierarchy (currently limited to 8)
  1401. *****************************************************************************
  1402. */
  1403. /*
  1404. ******************************************************************************
  1405.  
  1406.     BSStoreConnGetComponents - Gets the components of a Store.
  1407.  
  1408.     Inputs:        connection - the connection to the Store
  1409.                 tableSize - size of the table to be filled in
  1410.                 componentInfo - a pointer to an array of BSStoreComponentInfos 
  1411.                     to be filled in
  1412.  
  1413.     Returns:    E_BSSuccess if successful
  1414.             E_BSBadConnection if the connection ID has problems
  1415.  *****************************************************************************
  1416. */
  1417. /*
  1418. ******************************************************************************
  1419.  
  1420.     BSStoreConnMapDevice - Maps an entire device into a Store
  1421.  
  1422.     Inputs:        srcDevice - the Name Registry ID of the device
  1423.                 destConnection - the connection to the destination Store
  1424.  
  1425.     Returns:    E_BSSuccess if successful
  1426.                 E_BSBadConnection if the connection ID has problems
  1427.  *****************************************************************************
  1428. */
  1429. /*
  1430. ******************************************************************************
  1431.  
  1432.     BSStoreConnAssociateMappingPlugin - Attaches a Mapping Plug-in to a Store
  1433.  
  1434.     Inputs:        connection - the connection to the Store
  1435.                 mappingPlugin - the identifier of the Plugin to be attached
  1436.     Returns:    E_BSSuccess if successful
  1437.                 E_BSBadConnection if the connection ID has problems
  1438.                 E_BSEPlugInNotFound if the plugin specified can't be found
  1439.  *****************************************************************************
  1440. */
  1441. /*
  1442. ******************************************************************************
  1443.  
  1444.     BSStoreConnAssociatePartitioningPlugin - Attaches a Partitioning Plug-in to 
  1445.         a Store
  1446.  
  1447.     Inputs:        connection - the connection to the Store
  1448.                 mappingPlugin - the identifier of the Plugin to be attached
  1449.     Returns:    E_BSSuccess if successful
  1450.                 E_BSBadConnection if the connection ID has problems
  1451.                 E_BSEPlugInNotFound if the plugin specified can't be found
  1452.  *****************************************************************************
  1453. */
  1454. /*
  1455. ******************************************************************************
  1456.  
  1457.     BSStoreConnPublish - makes a Store available for general use
  1458.  
  1459.     Inputs:        connection - the connection to the Store
  1460.     Returns:    E_BSSuccess if successful
  1461.                 E_BSBadConnection if the connection ID has problems
  1462.  *****************************************************************************
  1463. */
  1464. /*
  1465. ******************************************************************************
  1466.  
  1467.     BSStoreConnUnpublish - removes a Store from general use
  1468.  
  1469.     Inputs:        connection - the connection to the Store
  1470.     Returns:    E_BSSuccess if successful
  1471.                 E_BSBadConnection if the connection ID has problems
  1472.  *****************************************************************************
  1473. */
  1474. /*
  1475. ******************************************************************************
  1476.  
  1477.     BSStoreConnFormat - formats a Store in the specified format
  1478.  
  1479.     Inputs:        connection - the connection to the Store
  1480.                 formatType - the format number from possibleFormats in the
  1481.                     BSStoreInfo structure
  1482.                     
  1483.     Returns:    E_BSSuccess if successful
  1484.                 E_BSBadConnection if the connection ID has problems
  1485.  *****************************************************************************
  1486. */
  1487. /*
  1488. ******************************************************************************
  1489.  
  1490.     BSContainerConnGetInfo - gets information about the Container  a Connection indicates
  1491.  
  1492.     Inputs:        infoConnection - the connection to the Container we want info about
  1493.  
  1494.     Outputs:    infoBuffer - the information about the Container
  1495.  
  1496.     Returns:    E_BSSuccess if successful
  1497.                 E_BSBadConnection if the connection ID has problems
  1498.  
  1499.  *****************************************************************************
  1500. */
  1501. /*
  1502. ******************************************************************************
  1503.  
  1504.     BSContainerCreate - Creates a new Container.  The Container is not added 
  1505.         into the Block Storage Container Hierarchy
  1506.  
  1507.     Inputs:        <none>
  1508.  
  1509.     Outputs:    newContainer - a connection to the newly created Container
  1510.  
  1511.     Returns:    E_BSSuccess if successful
  1512.  
  1513.  *****************************************************************************
  1514. */
  1515. /*
  1516. ******************************************************************************
  1517.  
  1518.     BSContainerConnDeleteAndClose - deletes the Container and closes the 
  1519.         connection to it.  No other connections to the Container may be open.
  1520.  
  1521.     Inputs:        deleteContainer - connection to the Container to be deleted    
  1522.  
  1523.     Outputs:    <none>
  1524.  
  1525.     Returns:    E_BSSuccess if successful
  1526.  
  1527.  *****************************************************************************
  1528. */
  1529. /*
  1530. ******************************************************************************
  1531.  
  1532.     BSContainerConnInsertContainer - inserts a Container into another Container
  1533.  
  1534.     Inputs:        destContainer - a connection to the Container to insert into
  1535.                 insertContainer - connection to the Container to be inserted
  1536.  
  1537.     Outputs:    <none>
  1538.  
  1539.     Returns:    E_BSSuccess if successful
  1540.  
  1541.  *****************************************************************************
  1542. */
  1543. /*
  1544. ******************************************************************************
  1545.  
  1546.     BSContainerConnPublish - makes a Container available for use.  Generates
  1547.         notifications as necessary
  1548.  
  1549.     Inputs:        publishContainer - connection to the Container to be published
  1550.  
  1551.     Outputs:    <none>
  1552.  
  1553.     Returns:    E_BSSuccess if successful
  1554.  
  1555.  *****************************************************************************
  1556. */
  1557. /*
  1558. ******************************************************************************
  1559.  
  1560.     BSContainerConnUnpublish - removes a Container from general accessibility,
  1561.         does not delete it.  The Container must not have any open connections or
  1562.         published children.
  1563.  
  1564.     Inputs:        unpublishContainer - the Container to unpublish
  1565.  
  1566.     Outputs:    <none>
  1567.  
  1568.     Returns:    E_BSSuccess if successful
  1569.  
  1570.  *****************************************************************************
  1571. */
  1572. /*
  1573. ******************************************************************************
  1574.  
  1575.     BSContainerConnSetDevice - sets the device the Container plug-in will 
  1576.         associate with.  Should be called before BSContainerConnAssociatePlugIn
  1577.         for bare Containers.
  1578.  
  1579.     Inputs:        connection - a connection to the Container we're associating
  1580.                     the plug-in with
  1581.                 deviceNode - the device the Container plug-in will interact with
  1582.  
  1583.     Outputs:    <none>
  1584.  
  1585.     Returns:    E_BSSuccess if successful
  1586.  
  1587.  *****************************************************************************
  1588. */
  1589. /*
  1590. ******************************************************************************
  1591.  
  1592.     BSContainerConnAssociatePlugIn - Associates a Container plug-in with a
  1593.         Container
  1594.  
  1595.     Inputs:        connection - a connection to the Container we're associating
  1596.                     the plug-in with
  1597.                 plugIn - the new plug in to be associated
  1598.  
  1599.     Outputs:    <none>
  1600.  
  1601.     Returns:    E_BSSuccess if successful
  1602.  
  1603.  *****************************************************************************
  1604. */
  1605. #endif
  1606.  
  1607. #endif /* __SOMIDL__ */
  1608.  
  1609. #endif /* __BLOCKSTORAGE_IDL__ */
  1610.  
  1611.